package nivel;

/**
 * Modela la gravedad del nivel. Es la encargada de hacer caer a los personajes.
 * 
 * @author Agustin Orge (LU.85538)
 * @author Victoria Martinez de la Cruz (LU.87620)
 */
public class Gravedad implements Runnable {

	/** El nivel */
	protected Nivel nivel;

	/** Si el thread termino o no */
	protected boolean threadDone;

	/**
	 * Constructor de gravedad. Recive el nivel al que quedara asociada.
	 * 
	 * @param nivel
	 *            que tendra gravedad
	 */
	public Gravedad(Nivel n) {
		nivel = n;
		threadDone = false;
	}

	// Metodos

	/**
	 * Metodo encargado de hacer caer a mario.
	 */
	public void gravitar() {
		nivel.getMario().caer();
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Runnable#run()
	 */
	@Override
	public void run() {
		while (!threadDone) {
			try {
				gravitar();
				Thread.sleep(50);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

	/**
	 * Metodo utilizado para terminar la ejecucion de la gravedad.
	 */
	public void threadDone() {
		threadDone = true;
	}
}
